<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArRangeBuffer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArRangeBuffer.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArRangeBuffer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArRangeBuffer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This class is a buffer that holds ranging information.  
 <a href="classArRangeBuffer.html#details">More...</a></p>

<p><code>#include &lt;ArRangeBuffer.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa5245f84f5fc2bd5f763770ddbeadd5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#aa5245f84f5fc2bd5f763770ddbeadd5f">addReading</a> (double x, double y)</td></tr>
<tr class="memdesc:aa5245f84f5fc2bd5f763770ddbeadd5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a new reading to the buffer.  <a href="#aa5245f84f5fc2bd5f763770ddbeadd5f">More...</a><br /></td></tr>
<tr class="separator:aa5245f84f5fc2bd5f763770ddbeadd5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e819cee21e3dec333402c47485e9fe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a4e819cee21e3dec333402c47485e9fe5">addReadingConditional</a> (double x, double y, double closeDistSquared, bool *wasAdded=NULL)</td></tr>
<tr class="memdesc:a4e819cee21e3dec333402c47485e9fe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a new reading to the buffer if some conditions are met.  <a href="#a4e819cee21e3dec333402c47485e9fe5">More...</a><br /></td></tr>
<tr class="separator:a4e819cee21e3dec333402c47485e9fe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adece9da0099a60a306f37acffb3804ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#adece9da0099a60a306f37acffb3804ed">applyTransform</a> (<a class="el" href="classArTransform.html">ArTransform</a> trans)</td></tr>
<tr class="memdesc:adece9da0099a60a306f37acffb3804ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a transform to the buffer.  <a href="#adece9da0099a60a306f37acffb3804ed">More...</a><br /></td></tr>
<tr class="separator:adece9da0099a60a306f37acffb3804ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7f77649fd0c1beb2536999f6cc6fae7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#ac7f77649fd0c1beb2536999f6cc6fae7">ArRangeBuffer</a> (int size)</td></tr>
<tr class="memdesc:ac7f77649fd0c1beb2536999f6cc6fae7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ac7f77649fd0c1beb2536999f6cc6fae7">More...</a><br /></td></tr>
<tr class="separator:ac7f77649fd0c1beb2536999f6cc6fae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a052e76c8a8d3e9c83887608756543839"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a052e76c8a8d3e9c83887608756543839">beginInvalidationSweep</a> (void)</td></tr>
<tr class="memdesc:a052e76c8a8d3e9c83887608756543839"><td class="mdescLeft">&#160;</td><td class="mdescRight">Begins a walk through the getBuffer list of readings.  <a href="#a052e76c8a8d3e9c83887608756543839">More...</a><br /></td></tr>
<tr class="separator:a052e76c8a8d3e9c83887608756543839"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace5239f26b4d2dd869517ae48fdd7942"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#ace5239f26b4d2dd869517ae48fdd7942">beginRedoBuffer</a> (void)</td></tr>
<tr class="memdesc:ace5239f26b4d2dd869517ae48fdd7942"><td class="mdescLeft">&#160;</td><td class="mdescRight">This begins a redoing of the buffer.  <a href="#ace5239f26b4d2dd869517ae48fdd7942">More...</a><br /></td></tr>
<tr class="separator:ace5239f26b4d2dd869517ae48fdd7942"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a663a0a7490ca9e2de1f358999d5442ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a663a0a7490ca9e2de1f358999d5442ed"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a663a0a7490ca9e2de1f358999d5442ed">clear</a> (void)</td></tr>
<tr class="memdesc:a663a0a7490ca9e2de1f358999d5442ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears all the readings in the range buffer. <br /></td></tr>
<tr class="separator:a663a0a7490ca9e2de1f358999d5442ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3145935f2bf0313eb38c3477748d6f3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3145935f2bf0313eb38c3477748d6f3d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a3145935f2bf0313eb38c3477748d6f3d">clearOlderThan</a> (int milliSeconds)</td></tr>
<tr class="memdesc:a3145935f2bf0313eb38c3477748d6f3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the readings older than this many seconds. <br /></td></tr>
<tr class="separator:a3145935f2bf0313eb38c3477748d6f3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b1c3ebcf2cdb86202bd1ffe526c1dc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b1c3ebcf2cdb86202bd1ffe526c1dc0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a4b1c3ebcf2cdb86202bd1ffe526c1dc0">clearOlderThanSeconds</a> (int seconds)</td></tr>
<tr class="memdesc:a4b1c3ebcf2cdb86202bd1ffe526c1dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the readings older than this many seconds. <br /></td></tr>
<tr class="separator:a4b1c3ebcf2cdb86202bd1ffe526c1dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adda5ad925a437dda26169a951dc17941"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#adda5ad925a437dda26169a951dc17941">endInvalidationSweep</a> (void)</td></tr>
<tr class="memdesc:adda5ad925a437dda26169a951dc17941"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends the invalidation sweep.  <a href="#adda5ad925a437dda26169a951dc17941">More...</a><br /></td></tr>
<tr class="separator:adda5ad925a437dda26169a951dc17941"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3344ce858d5b3246f95ba8b210234815"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a3344ce858d5b3246f95ba8b210234815">endRedoBuffer</a> (void)</td></tr>
<tr class="memdesc:a3344ce858d5b3246f95ba8b210234815"><td class="mdescLeft">&#160;</td><td class="mdescRight">End redoing the buffer.  <a href="#a3344ce858d5b3246f95ba8b210234815">More...</a><br /></td></tr>
<tr class="separator:a3344ce858d5b3246f95ba8b210234815"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb7c7d071e997949df575093dcdd94b7"><td class="memItemLeft" align="right" valign="top">const std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#aeb7c7d071e997949df575093dcdd94b7">getBuffer</a> (void) const </td></tr>
<tr class="memdesc:aeb7c7d071e997949df575093dcdd94b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a pointer to a list of readings.  <a href="#aeb7c7d071e997949df575093dcdd94b7">More...</a><br /></td></tr>
<tr class="separator:aeb7c7d071e997949df575093dcdd94b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a904e23bb7652c40c817b4e27b9ad3002"><td class="memItemLeft" align="right" valign="top">std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a904e23bb7652c40c817b4e27b9ad3002">getBuffer</a> (void)</td></tr>
<tr class="memdesc:a904e23bb7652c40c817b4e27b9ad3002"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a pointer to a list of readings.  <a href="#a904e23bb7652c40c817b4e27b9ad3002">More...</a><br /></td></tr>
<tr class="separator:a904e23bb7652c40c817b4e27b9ad3002"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0a4e785b97242cdf05f52a166cd154a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#ab0a4e785b97242cdf05f52a166cd154a">getBufferAsVector</a> (void)</td></tr>
<tr class="memdesc:ab0a4e785b97242cdf05f52a166cd154a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the buffer as an array instead of as a std::list.  <a href="#ab0a4e785b97242cdf05f52a166cd154a">More...</a><br /></td></tr>
<tr class="separator:ab0a4e785b97242cdf05f52a166cd154a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9282cf18f8e0bb308c8b175c4e65ff3a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a9282cf18f8e0bb308c8b175c4e65ff3a">getClosestBox</a> (double x1, double y1, double x2, double y2, <a class="el" href="classArPose.html">ArPose</a> position, unsigned int maxRange, <a class="el" href="classArPose.html">ArPose</a> *readingPos=NULL, <a class="el" href="classArPose.html">ArPose</a> targetPose=<a class="el" href="classArPose.html">ArPose</a>(0, 0, 0)) const </td></tr>
<tr class="memdesc:a9282cf18f8e0bb308c8b175c4e65ff3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the closest reading, from a rectangular box, in robot LOCAL coords.  <a href="#a9282cf18f8e0bb308c8b175c4e65ff3a">More...</a><br /></td></tr>
<tr class="separator:a9282cf18f8e0bb308c8b175c4e65ff3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ff2cea3d857c7d17b8f6ac38f934a12"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a4ff2cea3d857c7d17b8f6ac38f934a12">getClosestPolar</a> (double startAngle, double endAngle, <a class="el" href="classArPose.html">ArPose</a> position, unsigned int maxRange, double *angle=NULL) const </td></tr>
<tr class="memdesc:a4ff2cea3d857c7d17b8f6ac38f934a12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the closest reading, on a polar system.  <a href="#a4ff2cea3d857c7d17b8f6ac38f934a12">More...</a><br /></td></tr>
<tr class="separator:a4ff2cea3d857c7d17b8f6ac38f934a12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab668751892a74de9b264e5bba45113f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab668751892a74de9b264e5bba45113f3"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#ab668751892a74de9b264e5bba45113f3">getEncoderPoseTaken</a> () const </td></tr>
<tr class="memdesc:ab668751892a74de9b264e5bba45113f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the encoder pose of the robot when readings were taken. <br /></td></tr>
<tr class="separator:ab668751892a74de9b264e5bba45113f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa36f04dadc6437562f4569e7fadc6327"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa36f04dadc6437562f4569e7fadc6327"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#aa36f04dadc6437562f4569e7fadc6327">getPoseTaken</a> () const </td></tr>
<tr class="memdesc:aa36f04dadc6437562f4569e7fadc6327"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the pose of the robot when readings were taken. <br /></td></tr>
<tr class="separator:aa36f04dadc6437562f4569e7fadc6327"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a254bc69487b71f8d9171d31c5393dac9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a254bc69487b71f8d9171d31c5393dac9"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a254bc69487b71f8d9171d31c5393dac9">getSize</a> (void) const </td></tr>
<tr class="memdesc:a254bc69487b71f8d9171d31c5393dac9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the size of the buffer. <br /></td></tr>
<tr class="separator:a254bc69487b71f8d9171d31c5393dac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a297a1222250eff4d091519494a576db0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a297a1222250eff4d091519494a576db0">invalidateReading</a> (std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator readingIt)</td></tr>
<tr class="memdesc:a297a1222250eff4d091519494a576db0"><td class="mdescLeft">&#160;</td><td class="mdescRight">While doing an invalidation sweep a reading to the list to be invalidated.  <a href="#a297a1222250eff4d091519494a576db0">More...</a><br /></td></tr>
<tr class="separator:a297a1222250eff4d091519494a576db0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace888219e83dee531e592ddd75394c18"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#ace888219e83dee531e592ddd75394c18">redoReading</a> (double x, double y)</td></tr>
<tr class="memdesc:ace888219e83dee531e592ddd75394c18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a reading to the redoing of the buffer.  <a href="#ace888219e83dee531e592ddd75394c18">More...</a><br /></td></tr>
<tr class="separator:ace888219e83dee531e592ddd75394c18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a764d3e415dbb6be49c725475209c318f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a764d3e415dbb6be49c725475209c318f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a764d3e415dbb6be49c725475209c318f">reset</a> (void)</td></tr>
<tr class="memdesc:a764d3e415dbb6be49c725475209c318f"><td class="mdescLeft">&#160;</td><td class="mdescRight">same as clear, but old name <br /></td></tr>
<tr class="separator:a764d3e415dbb6be49c725475209c318f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56114359a4fff9ed9d64f8caf45a93b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56114359a4fff9ed9d64f8caf45a93b7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a56114359a4fff9ed9d64f8caf45a93b7">setEncoderPoseTaken</a> (<a class="el" href="classArPose.html">ArPose</a> p)</td></tr>
<tr class="memdesc:a56114359a4fff9ed9d64f8caf45a93b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pose of the robot when readings were taken. <br /></td></tr>
<tr class="separator:a56114359a4fff9ed9d64f8caf45a93b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a964cff6a88cf073feb693034ed5a23de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a964cff6a88cf073feb693034ed5a23de"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a964cff6a88cf073feb693034ed5a23de">setPoseTaken</a> (<a class="el" href="classArPose.html">ArPose</a> p)</td></tr>
<tr class="memdesc:a964cff6a88cf073feb693034ed5a23de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pose of the robot when readings were taken. <br /></td></tr>
<tr class="separator:a964cff6a88cf073feb693034ed5a23de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34015d54951d3de04931fd88f84d74ac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a34015d54951d3de04931fd88f84d74ac">setSize</a> (size_t size)</td></tr>
<tr class="memdesc:a34015d54951d3de04931fd88f84d74ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the buffer.  <a href="#a34015d54951d3de04931fd88f84d74ac">More...</a><br /></td></tr>
<tr class="separator:a34015d54951d3de04931fd88f84d74ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa090c14212594aeb564b459059e5a44b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa090c14212594aeb564b459059e5a44b"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#aa090c14212594aeb564b459059e5a44b">~ArRangeBuffer</a> ()</td></tr>
<tr class="memdesc:aa090c14212594aeb564b459059e5a44b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:aa090c14212594aeb564b459059e5a44b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a707a75429cb5cdef829a60d76d3364a6"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a707a75429cb5cdef829a60d76d3364a6">getClosestBoxInList</a> (double x1, double y1, double x2, double y2, <a class="el" href="classArPose.html">ArPose</a> position, unsigned int maxRange, <a class="el" href="classArPose.html">ArPose</a> *readingPos, <a class="el" href="classArPose.html">ArPose</a> targetPose, const std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *buffer)</td></tr>
<tr class="memdesc:a707a75429cb5cdef829a60d76d3364a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the closest reading, from an arbitrary buffer.  <a href="#a707a75429cb5cdef829a60d76d3364a6">More...</a><br /></td></tr>
<tr class="separator:a707a75429cb5cdef829a60d76d3364a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e6386da42a273f51edfb074c22f3a5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e6386da42a273f51edfb074c22f3a5f"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArRangeBuffer.html#a6e6386da42a273f51edfb074c22f3a5f">getClosestPolarInList</a> (double startAngle, double endAngle, <a class="el" href="classArPose.html">ArPose</a> position, unsigned int maxRange, double *angle, const std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *buffer)</td></tr>
<tr class="memdesc:a6e6386da42a273f51edfb074c22f3a5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the closest reading, from an arbitrary buffer. <br /></td></tr>
<tr class="separator:a6e6386da42a273f51edfb074c22f3a5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a40a1d7357ce053ec1cb56b7cb5d46bb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40a1d7357ce053ec1cb56b7cb5d46bb1"></a>
std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myBuffer</b></td></tr>
<tr class="separator:a40a1d7357ce053ec1cb56b7cb5d46bb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38b60f3f67d7a3dcb52071d76f09f779"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38b60f3f67d7a3dcb52071d76f09f779"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myBufferPose</b></td></tr>
<tr class="separator:a38b60f3f67d7a3dcb52071d76f09f779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b264b4cb8b1a07098461b6824509559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b264b4cb8b1a07098461b6824509559"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myEncoderBufferPose</b></td></tr>
<tr class="separator:a8b264b4cb8b1a07098461b6824509559"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8d48b9b15cf8548e8781ba33d3f6e83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8d48b9b15cf8548e8781ba33d3f6e83"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myHitEnd</b></td></tr>
<tr class="separator:af8d48b9b15cf8548e8781ba33d3f6e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e515cf0685e52aab24e14194ca5dda7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e515cf0685e52aab24e14194ca5dda7"></a>
std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myInvalidBuffer</b></td></tr>
<tr class="separator:a6e515cf0685e52aab24e14194ca5dda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38aff1a01c9a31c8316db01af7bde8b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38aff1a01c9a31c8316db01af7bde8b8"></a>
std::list&lt; std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator &gt;::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>myInvalidIt</b></td></tr>
<tr class="separator:a38aff1a01c9a31c8316db01af7bde8b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb431f45574c7bb10b0c2afb266a60ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb431f45574c7bb10b0c2afb266a60ef"></a>
std::list&lt; std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myInvalidSweepList</b></td></tr>
<tr class="separator:abb431f45574c7bb10b0c2afb266a60ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a125896ba83d235aa315e32e9ce8ee793"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a125896ba83d235aa315e32e9ce8ee793"></a>
std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>myIterator</b></td></tr>
<tr class="separator:a125896ba83d235aa315e32e9ce8ee793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6f27eddc47846627f363ec22c16d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d6f27eddc47846627f363ec22c16d9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myNumRedone</b></td></tr>
<tr class="separator:ad5d6f27eddc47846627f363ec22c16d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7494bc08bb06600e94065abd042f3809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7494bc08bb06600e94065abd042f3809"></a>
<a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myReading</b></td></tr>
<tr class="separator:a7494bc08bb06600e94065abd042f3809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed65d29ebe1fa825d8f8482097b43671"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed65d29ebe1fa825d8f8482097b43671"></a>
std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>myRedoIt</b></td></tr>
<tr class="separator:aed65d29ebe1fa825d8f8482097b43671"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4527dca13d1f2838c930fa894e1d03a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4527dca13d1f2838c930fa894e1d03a6"></a>
std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::reverse_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>myRevIterator</b></td></tr>
<tr class="separator:a4527dca13d1f2838c930fa894e1d03a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac74a029ba06736543cab2eaa2ab7586e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac74a029ba06736543cab2eaa2ab7586e"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>mySize</b></td></tr>
<tr class="separator:ac74a029ba06736543cab2eaa2ab7586e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e10201b971004dbdef9a9b774bc6895"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e10201b971004dbdef9a9b774bc6895"></a>
std::vector&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myVector</b></td></tr>
<tr class="separator:a7e10201b971004dbdef9a9b774bc6895"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class is a buffer that holds ranging information. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac7f77649fd0c1beb2536999f6cc6fae7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArRangeBuffer::ArRangeBuffer </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>The size of the buffer, in number of readings </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa5245f84f5fc2bd5f763770ddbeadd5f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::addReading </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a new reading to the buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>the x position of the reading </td></tr>
    <tr><td class="paramname">y</td><td>the y position of the reading </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="customRangeSensorExample_8cpp-example.html#a18">customRangeSensorExample.cpp</a>, and <a class="el" href="customRangeSensorExampleRobotTask_8cpp-example.html#a21">customRangeSensorExampleRobotTask.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a4e819cee21e3dec333402c47485e9fe5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::addReadingConditional </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>closeDistSquared</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>wasAdded</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a new reading to the buffer if some conditions are met. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>the x position of the reading </td></tr>
    <tr><td class="paramname">y</td><td>the y position of the reading</td></tr>
    <tr><td class="paramname">closeDistSquared</td><td>if the new reading is within closeDistSquared distanceSquared of an old point the old point is just updated for time</td></tr>
    <tr><td class="paramname">wasAdded</td><td>pointed to set to true if the reading was added, or false if not </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adece9da0099a60a306f37acffb3804ed"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::applyTransform </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArTransform.html">ArTransform</a>&#160;</td>
          <td class="paramname"><em>trans</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Applies a transform to the buffer. </p>
<p>Applies a transform to the buffers.</p>
<p>. this is mostly useful for translating to/from local/global coords, but may have other uses </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trans</td><td>the transform to apply to the data </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a052e76c8a8d3e9c83887608756543839"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::beginInvalidationSweep </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Begins a walk through the getBuffer list of readings. </p>
<p>This is a set of funkiness used to invalid readings in the buffer.</p>
<p>It is fairly complicated. But what you need to do, is set up the invalid sweeping with beginInvalidationSweep, then walk through the list of readings, and pass the iterator to a reading you want to invalidate to invalidateReading, then after you are all through walking the list call endInvalidationSweep. Look at the description of getBuffer for additional warnings. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArRangeBuffer.html#a297a1222250eff4d091519494a576db0" title="While doing an invalidation sweep a reading to the list to be invalidated. ">invalidateReading</a> </dd>
<dd>
<a class="el" href="classArRangeBuffer.html#adda5ad925a437dda26169a951dc17941" title="Ends the invalidation sweep. ">endInvalidationSweep</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ace5239f26b4d2dd869517ae48fdd7942"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::beginRedoBuffer </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This begins a redoing of the buffer. </p>
<p>To redo the buffer means that you want to replace all of the readings in the buffer with new pose values, and get rid of the readings that you didn't update with new values (invalidate them).</p>
<p>The three functions <a class="el" href="classArRangeBuffer.html#ace5239f26b4d2dd869517ae48fdd7942" title="This begins a redoing of the buffer. ">beginRedoBuffer()</a>, <a class="el" href="classArRangeBuffer.html#ace888219e83dee531e592ddd75394c18" title="Add a reading to the redoing of the buffer. ">redoReading()</a>, and <a class="el" href="classArRangeBuffer.html#a3344ce858d5b3246f95ba8b210234815" title="End redoing the buffer. ">endRedoBuffer()</a> are all made to enable you to do this. First call <a class="el" href="classArRangeBuffer.html#ace5239f26b4d2dd869517ae48fdd7942" title="This begins a redoing of the buffer. ">beginRedoBuffer()</a>. Then for each reading you want to update in the buffer, call <a class="el" href="classArRangeBuffer.html#ace888219e83dee531e592ddd75394c18" title="Add a reading to the redoing of the buffer. ">redoReading(double x, double y)</a>, then when you are done, call <a class="el" href="classArRangeBuffer.html#a3344ce858d5b3246f95ba8b210234815" title="End redoing the buffer. ">endRedoBuffer()</a>. </p>

</div>
</div>
<a class="anchor" id="adda5ad925a437dda26169a951dc17941"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::endInvalidationSweep </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ends the invalidation sweep. </p>
<p>See the description of beginInvalidationSweep, it describes how to use this function.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArRangeBuffer.html#a052e76c8a8d3e9c83887608756543839" title="Begins a walk through the getBuffer list of readings. ">beginInvalidationSweep</a> </dd>
<dd>
<a class="el" href="classArRangeBuffer.html#a297a1222250eff4d091519494a576db0" title="While doing an invalidation sweep a reading to the list to be invalidated. ">invalidateReading</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a3344ce858d5b3246f95ba8b210234815"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::endRedoBuffer </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>End redoing the buffer. </p>
<p>For a description of how to use this, see <a class="el" href="classArRangeBuffer.html#ace5239f26b4d2dd869517ae48fdd7942" title="This begins a redoing of the buffer. ">beginRedoBuffer()</a> </p>

</div>
</div>
<a class="anchor" id="aeb7c7d071e997949df575093dcdd94b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; * ArRangeBuffer::getBuffer </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets a pointer to a list of readings. </p>
<p>This function returns a pointer to a list that has all of the readings in it.</p>
<p><b>Java and Python Wrappers:</b> Not available in Java or Python wrapper libraries.</p>
<p>This list is mostly for reference, ie for finding some particular value or for using the readings to draw them. Don't do any modification at all to the list unless you really know what you're doing... and if you do you'd better lock the rangeDevice this came from so nothing messes with the list while you are doing so. </p><dl class="section return"><dt>Returns</dt><dd>the list of positions this range buffer has </dd></dl>

</div>
</div>
<a class="anchor" id="a904e23bb7652c40c817b4e27b9ad3002"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; * ArRangeBuffer::getBuffer </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets a pointer to a list of readings. </p>
<p>This function returns a pointer to a list that has all of the readings in it.</p>
<p>This list is mostly for reference, ie for finding some particular value or for using the readings to draw them. Don't do any modification at all to the list unless you really know what you're doing... and if you do you'd better lock the rangeDevice this came from so nothing messes with the list while you are doing so. </p><dl class="section return"><dt>Returns</dt><dd>the list of positions this range buffer has </dd></dl>

</div>
</div>
<a class="anchor" id="ab0a4e785b97242cdf05f52a166cd154a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> &gt; * ArRangeBuffer::getBufferAsVector </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the buffer as an array instead of as a std::list. </p>
<p>Copy the readings from this buffer to a vector stored within this object, and return a pointer to that vector.</p>
<p>Note that the actual vector object is stored within <a class="el" href="classArRangeBuffer.html" title="This class is a buffer that holds ranging information. ">ArRangeBuffer</a>, be careful if accessing it from multiple threads. </p><dl class="section return"><dt>Returns</dt><dd>Pointer to reading vector. </dd></dl>

</div>
</div>
<a class="anchor" id="a9282cf18f8e0bb308c8b175c4e65ff3a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double ArRangeBuffer::getClosestBox </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a>&#160;</td>
          <td class="paramname"><em>startPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>maxRange</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a> *&#160;</td>
          <td class="paramname"><em>readingPos</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a>&#160;</td>
          <td class="paramname"><em>targetPose</em> = <code><a class="el" href="classArPose.html">ArPose</a>(0,&#160;0,&#160;0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the closest reading, from a rectangular box, in robot LOCAL coords. </p>
<p>Gets the closest reading in a region defined by two points (opposeite points of a rectangle).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x1</td><td>the x coordinate of one of the rectangle points </td></tr>
    <tr><td class="paramname">y1</td><td>the y coordinate of one of the rectangle points </td></tr>
    <tr><td class="paramname">x2</td><td>the x coordinate of the other rectangle point </td></tr>
    <tr><td class="paramname">y2</td><td>the y coordinate of the other rectangle point </td></tr>
    <tr><td class="paramname">startPos</td><td>the position to find the closest reading to (usually the robots position) </td></tr>
    <tr><td class="paramname">maxRange</td><td>the maximum range to return (and what to return if nothing found) </td></tr>
    <tr><td class="paramname">readingPos</td><td>a pointer to a position in which to store the location of the closest position </td></tr>
    <tr><td class="paramname">targetPose</td><td>the origin of the local coords for the definition of the coordinates, e.g. ArRobot::getPosition() to center the box on the robot </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>if the return is &gt;= 0 and &lt;= maxRange then this is the distance to the closest reading, if it is &gt;= maxRange, then there was no reading in the given section </dd></dl>

</div>
</div>
<a class="anchor" id="a707a75429cb5cdef829a60d76d3364a6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArRangeBuffer::getClosestBoxInList </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a>&#160;</td>
          <td class="paramname"><em>startPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>maxRange</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a> *&#160;</td>
          <td class="paramname"><em>readingPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a>&#160;</td>
          <td class="paramname"><em>targetPose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *&#160;</td>
          <td class="paramname"><em>buffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the closest reading, from an arbitrary buffer. </p>
<p>Get closest reading in a region defined by two points (opposeite points of a rectangle) from a given list readings (rather than the readings stored in an <a class="el" href="classArRangeBuffer.html" title="This class is a buffer that holds ranging information. ">ArRangeBuffer</a>)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x1</td><td>the x coordinate of one of the rectangle points </td></tr>
    <tr><td class="paramname">y1</td><td>the y coordinate of one of the rectangle points </td></tr>
    <tr><td class="paramname">x2</td><td>the x coordinate of the other rectangle point </td></tr>
    <tr><td class="paramname">y2</td><td>the y coordinate of the other rectangle point </td></tr>
    <tr><td class="paramname">startPos</td><td>the position to find the closest reading to (usually the robots position) </td></tr>
    <tr><td class="paramname">maxRange</td><td>the maximum range to return (and what to return if nothing found) </td></tr>
    <tr><td class="paramname">readingPos</td><td>a pointer to a position in which to store the location of the closest position </td></tr>
    <tr><td class="paramname">targetPose</td><td>the origin of the local coords for the definition of the coordinates, normally just ArRobot::getPosition() </td></tr>
    <tr><td class="paramname">buffer</td><td>Use the reading positions from this list </td></tr>
    <tr><td class="paramname">targetPose</td><td>the pose to see if we're closest too (in local coordinates), this should nearly always be the default of 0 0 0 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>if the return is &gt;= 0 and &lt;= maxRange then this is the distance to the closest reading, if it is &gt;= maxRange, then there was no reading in the given section </dd></dl>

</div>
</div>
<a class="anchor" id="a4ff2cea3d857c7d17b8f6ac38f934a12"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double ArRangeBuffer::getClosestPolar </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>startAngle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>endAngle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArPose.html">ArPose</a>&#160;</td>
          <td class="paramname"><em>startPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>maxRange</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>angle</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the closest reading, on a polar system. </p>
<p>Gets the closest reading in a region defined by startAngle going to endAngle...</p>
<p>going counterclockwise (neg degrees to poseitive... with how the robot is set up, thats counterclockwise)... from -180 to 180... this means if you want the slice between 0 and 10 degrees, you must enter it as 0, 10, if you do 10, 0 you'll get the 350 degrees between 10 and 0... be especially careful with negative... for example -30 to -60 is everything from -30, around through 0, 90, and 180 back to -60... since -60 is actually to clockwise of -30 </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">startAngle</td><td>where to start the slice </td></tr>
    <tr><td class="paramname">endAngle</td><td>where to end the slice, going clockwise from startAngle </td></tr>
    <tr><td class="paramname">startPos</td><td>the position to find the closest reading to (usually the robots position) </td></tr>
    <tr><td class="paramname">maxRange</td><td>the maximum range to return (and what to return if nothing found) </td></tr>
    <tr><td class="paramname">angle</td><td>a pointer return of the angle to the found reading </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>if the return is &gt;= 0 and &lt;= maxRange then this is the distance to the closest reading, if it is &gt;= maxRange, then there was no reading in the given section </dd></dl>

</div>
</div>
<a class="anchor" id="a297a1222250eff4d091519494a576db0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::invalidateReading </td>
          <td>(</td>
          <td class="paramtype">std::list&lt; <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt;::iterator&#160;</td>
          <td class="paramname"><em>readingIt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>While doing an invalidation sweep a reading to the list to be invalidated. </p>
<p>See the description of beginInvalidationSweep, it describes how to use this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">readingIt</td><td>the ITERATOR to the reading you want to get rid of </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>beginInvaladationSweep </dd>
<dd>
<a class="el" href="classArRangeBuffer.html#adda5ad925a437dda26169a951dc17941" title="Ends the invalidation sweep. ">endInvalidationSweep</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ace888219e83dee531e592ddd75394c18"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::redoReading </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a reading to the redoing of the buffer. </p>
<p>For a description of how to use this, see <a class="el" href="classArRangeBuffer.html#ace5239f26b4d2dd869517ae48fdd7942" title="This begins a redoing of the buffer. ">beginRedoBuffer()</a></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>the x param of the coord to add to the buffer </td></tr>
    <tr><td class="paramname">y</td><td>the x param of the coord to add to the buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a34015d54951d3de04931fd88f84d74ac"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArRangeBuffer::setSize </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the size of the buffer. </p>
<p>If the new size is smaller than the current buffer it chops off the readings that are excess from the oldest readings...</p>
<p>if the new size is larger then it just leaves room for the buffer to grow </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>number of readings to set the buffer to </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArRangeBuffer.h</li>
<li>ArRangeBuffer.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArRangeBuffer.html">ArRangeBuffer</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
